package algo3.algocity.modelo.menu;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import algo3.algocity.modelo.excepciones.NoSePuedeEdificarEnEsaZonaException;
import algo3.algocity.modelo.interfaces.MegaConstruccion;
import algo3.algocity.modelo.mapa.Coordenada;

public class Jugador {

	private int dineroEnPesos;
	private String nombre;
	private Partida partida;
	
	public Jugador() {
		
		this.dineroEnPesos = 5000;
		this.nombre = " ";
		this.partida = new Partida();
	}
	
	public Jugador(String nombre) {
		
		this.dineroEnPesos = 5000;
		this.nombre = nombre;
		this.partida = new Partida();
	}
	
	public Element serializar(Document doc) {
		
		Element elementoJugador = doc.createElement("Jugador");
		elementoJugador.setAttribute("nombre",this.nombre);
		elementoJugador.setAttribute("dineroEnPesos",""+this.dineroEnPesos);
		elementoJugador.appendChild(this.partida.serializar(doc));
		return elementoJugador;
	}

	public static Jugador hidratar(Document doc) {
		
		Jugador nuevoJugador = new Jugador();
		Element elementoJugador = (Element)doc.getElementsByTagName("Jugador").item(0);
		nuevoJugador.nombre = elementoJugador.getAttribute("nombre");
		return nuevoJugador;
	}
	
	public String obtenerNombre() {
		
		return this.nombre;
	}
	
	public int dinero() {
		
		return this.dineroEnPesos;
	}

	public void cobrarPorCiudadano() {
		
		this.dineroEnPesos += this.partida.pagarAlJugadorPorCiudadano();
	}
	

	public void construirMegaConstruccion(MegaConstruccion construccion, Coordenada coordenada) throws NoSePuedeEdificarEnEsaZonaException {
		
		this.dineroEnPesos = this.dineroEnPesos - construccion.costo();
		this.partida.construir(construccion,coordenada);
		
	}

	public Partida obtenerPartida() {
		 
		return this.partida;
	}
	
	/*public void construirTuberiaDeAgua(TuberiaDeAgua tuberiaDeAgua,Coordenada coordenada) throws NoSePuedeEdificarEnEsaZonaException{
		
		this.dineroEnPesos -= tuberiaDeAgua.costo();
		this.partida.construirTuberiaDeAgua(tuberiaDeAgua,coordenada);
	}
	
	public void construirLineaDeTension(LineaDeTension lineaDeTension,Coordenada coordenada) throws NoSePuedeEdificarEnEsaZonaException{
		
		this.dineroEnPesos -= lineaDeTension.costo();
		this.partida.construirLineaDeTension(lineaDeTension,coordenada);
	}*/


}
